<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>全局对象(global object)</title>
  <!-- 
  全局对象是 JavaScript 中的一个重要概念，代表了在全局范围内可访问的对象。
  1. 定义全局对象
  - 概念：全局对象是 JavaScript 中在任何作用域中都可访问的对象。它包含了全局作用域中的所有变量和函数。
  - 在浏览器中的全局对象：在浏览器环境中，全局对象是  `window`  对象。
  - 在 Node.js 中的全局对象：在 Node.js 环境中，全局对象是  `global`  对象。

  2. 全局对象的特性
  - 属性和方法：全局对象包含许多内置的全局变量和函数，例如  `Math` 、 `Date` 、 `JSON`  等。
  - 隐式声明：在全局作用域中声明的变量和函数会成为全局对象的属性和方法。例如：
    var globalVar = '这是一个全局变量';
    function globalFunc() {
      console.log('这是一个全局函数');
    }

  - 访问方式：可以通过全局对象直接访问全局变量和函数。例如：
    console.log(window.globalVar); // 在浏览器中访问全局变量
    globalFunc(); // 调用全局函数

  3. 全局对象的用途
  - 存储全局状态：全局对象可以用来存储应用程序的全局状态和配置。
  - 共享功能：全局对象中的方法和属性可以在整个应用程序中共享，方便不同模块之间的交互。

  4. 全局对象的注意事项
  - 命名冲突：使用全局变量时要小心命名冲突，尽量避免在全局作用域中声明过多变量。
  - 性能问题：过多的全局变量可能会导致性能问题，建议使用局部变量或模块化设计来管理状态。
  - 安全性：全局状态可能被意外修改，影响应用程序的稳定性，建议使用闭包或模块化来封装变量。

  5. 总结
  全局对象是 JavaScript 中的重要组成部分，提供了在全局范围内可访问的变量和函数。理解全局对象的特性和用途，有助于更好地管理应用程序的状态和功能。合理使用全局对象，可以提高代码的可读性和可维护性，同时避免潜在的命名冲突和性能问题。
   -->
</head>
<body>

  <script>
    console.log(window);

    var name = '全局对象';

    let info = '这是一个全局变量';

    console.log(window.name); // 全局对象
    console.log(window.info) // undefined

    console.log(window.console === console); // true

    console.log(window.document === document); // true

    console.log(window.alert === alert); // true

    console.log(window.prompt === prompt); // true

    console.log(window.confirm === confirm); // true

    console.log(window.location === location); // true

    console.log(window.history === history); // true

    console.log(window.navigator === navigator); // true

    console.log(window.localStorage === localStorage); // true
    
  </script>
  
</body>
</html>